// Variables para el manejo de hojas var hojaPrincipal = "Hoja 1"; var hojaUltimosValores = "Últimos Valores"; var hojaDatosUsuarios = "datos usuarios"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var hoja = ss.getSheetByName(hojaPrincipal); var hojaValores = ss.getSheetByName(hojaUltimosValores); var hojaUsuarios = ss.getSheetByName(hojaDatosUsuarios); // Variables obtenidas de funciones por return var e_number; // función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e. function doPost(e){ return handleRepose(e) ; } // Código para crear o obtener una hoja llamada '_Logs' function crearHojaLogs() { // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta. var sheet_log = ss.getSheetByName('_Logs'); if (!sheet_log) { ss.insertSheet('_Logs'); sheet_log = ss.getSheetByName('_Logs'); } // Registramos el número de ejecuciones if (sheet_log.getRange('A1').isBlank()) { sheet_log.getRange('A1').setValue(1); // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1 } else { sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1); } // Devuelve el número de ejecución y lo almacena en la variable e_number e_number = sheet_log.getRange('A1').getValue(); return e_number; } function crearHojaUltimosValores() { // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta. var hojaValores = ss.getSheetByName(hojaUltimosValores); if (!hojaValores) { ss.insertSheet(hojaUltimosValores); hojaValores = ss.getSheetByName(hojaUltimosValores); } // Cabecera // La creamos si no existe if(hojaValores.getRange('A1').isBlank()){ var h_row2 = []; //contenedor para almacenar con push los nombres de las cabeceras //empujamos los datos al array vacío h_row2.push("Nombre"); h_row2.push("Fecha"); h_row2.push("PH"); h_row2.push("Bateria V"); h_row2.push("Temperatura ºC"); // pegamos los datos en la primera fila hojaValores.getRange(1, 1, 1, h_row2.length).setValues([h_row2]); } } // Función para function handleRepose(e) { //llamamos a la función que crea la hoja de errores y a la que crea las hojas de datos crearHojaLogs() crearHojaUltimosValores() try{ // Cabecera // La creamos si no existe if(hoja.getRange('A1').isBlank()){ var h_row = []; //contenedor para almacenar con push los nombres de las cabeceras h_row.push("cen"); // current execution number h_row.push("fecha-hora"); h_row.push("nombre"); h_row.push("ph"); h_row.push("Bateria V"); h_row.push("Temperatura ºC"); hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]); } // Parseamos los datos entrantes, que vienen en formato JSON // se explicará como llamar los datos dentro del JSON con mas detalle en otro ejercicio var jsonData = JSON.parse(e.postData.contents); var row = []; row.push(e_number); row.push(new Date()); row.push(jsonData.end_device_ids.device_id); row.push(jsonData.uplink_message.decoded_payload.PH1_SOIL !== undefined ? jsonData.uplink_message.decoded_payload.PH1_SOIL.toString().replace('.', ',') : ''); row.push(jsonData.uplink_message.decoded_payload.Bat !== undefined ? jsonData.uplink_message.decoded_payload.Bat.toString().replace('.', ',') : ''); row.push(jsonData.uplink_message.decoded_payload.TEMP_SOIL !== undefined ? jsonData.uplink_message.decoded_payload.TEMP_SOIL.toString().replace('.', ',') : ''); hoja.appendRow(row); } catch (err) { // Guardamos los errores que haya podido haber var sheet_log = ss.getSheetByName('_Logs'); sheet_log.appendRow([e_number, err.message]); } }